<!--
 * @Author: your name
 * @Date: 2024-03-28 15:25:27
 * @LastEditTime: 2024-04-03 16:48:09
 * @LastEditors: CaoYanhua
 * @Description: In User Settings Edit
 * @FilePath: \station-b-study\blackHorse学习\vuex学习\vuex_demo01\src\views\2024demo\logGzipDemo.vue
-->
<template>
  <div class="tslogDemo">
    <p>tsLogDemo</p>
    <el-button type="primary" @click="compressIntoGzip">Compress into gzip</el-button>
    <el-button type="primary" @click="goUpload">点击</el-button>
  </div>
</template>
<script>
// import JSZip from 'jszip'
import { saveAs } from 'file-saver' // 用于保存文件
// import JSZipUtils from 'jszip-utils'
import pako from 'pako'
// import { logger } from "@/utils/logger";//后面位置根据自己的实际位置来
export default {
  data() {
    return {
      
    }
  },
  mounted(){
    
  },
  methods: {
    goUpload(){
      this.$logger.warn('你好呀',{name:'zhangsan',age:4},"啦啦啦啦这是第三个")
      this.$logger.warn({name:'lisi',age:444})
      // logger.warn({
      //   userId:'123456',
      //   content:'这是一条警告日志,一条warn日志',
      //   meetingId:980808
      // });
      // logger.warn({
      //   userId:'98765',
      //   content:'这是第二条警告日志,第二条条warn日志',
      //   meetingId:9999
      // });
    },
    //压缩成gzip的形式
    compressIntoGzip() {
      // 假设logs是你要压缩的日志数据
      const logs = [
        { title: '这是第一条日志内容', type: 1 },
        { title: '这是第2条日志内容', type: 2 },
        { title: '这是第一条日志内容', type: 3 },
      ]

      // 将日志数据转换为Uint8Array格式
      const uint8Data = new TextEncoder().encode(JSON.stringify(logs))

      // 使用pako进行gzip压缩
      const compressedData = pako.gzip(uint8Data)

      // 创建Blob对象用于保存压缩后的数据
      const blob = new Blob([compressedData], { type: 'application/gzip' })

      // // 创建一个<a>标签用于下载文件
      // const downloadLink = document.createElement('a')
      // downloadLink.href = URL.createObjectURL(blob)
      // downloadLink.download = 'log.gzip'

      // // 模拟点击下载链接以下载文件
      // downloadLink.click()
      // 保存压缩文件
      saveAs(blob, 'cyhlogs.gzip')
    },
    //压缩成zip的形式
    async compressAndUploadLogs() {
      const zip = new JSZip()

      // 假设logContent是日志内容，这里只是一个示例
      // 假设有多条日志内容需要写入到同一个文件中
      const logContents = [
        { title: '这是第一条日志内容', type: 1 },
        { title: '这是第2条日志内容', type: 2 },
        { title: '这是第一条日志内容', type: 3 },
      ]

      const logcontent2 = '111'
      // 将日志内容写入到zip文件中
      zip.file('log.txt', JSON.stringify(logContents), {
        compression: 'DEFLATE',
      })
      zip.file('log2.log', logcontent2, { compression: 'DEFLATE' })

      // 生成压缩文件
      const zipBlob = await zip.generateAsync({ type: 'blob' })

      console.log(zipBlob, 'zipBlob这个是什么')
      // 保存压缩文件
      saveAs(zipBlob, 'logs.zip')

      // 上传压缩文件
      // 这里可以使用axios或者其他方式上传文件到服务器
      // 比如使用FormData对象上传文件
      const formData = new FormData()
      formData.append('file', zipBlob, 'logs.zip')

      // 使用axios上传文件示例
      // axios.post('your_upload_endpoint', formData)
      //     .then(response => {
      //         console.log('文件上传成功');
      //     })
      //     .catch(error => {
      //         console.error('文件上传失败', error);
      //     });
    },
  },
}
</script>
<style lang="scss" scoped>
.tslogDemo{
    padding:30px;
}
</style>
